iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 24
0

企劃中提到,BlueRemedy有個特殊豐饒度機制,當Oka走過髒汙區域,能讓枯萎的花草再次展現生命再次豐饒,並在通關後計算整個區域的豐饒程度作為隱形的完美通關成就。

今天的內容將以這個機制為主題,一步一步分享我們是如何在在場景中設置豐饒花草物件,以及如何計算百分比。

首先,因為豐饒度UI的製作方式已經有在Day11的UI提過了,所以今天並不會再講解UI設定的部分。至於UI slider操控的部分雖然沒有寫到,但基本上就是取得Slider元件並設定數值,不懂的讀者可以網路上搜尋資料~


好了嗎 開始囉!

Step1:

因為要讓花草長出,所以第一步需要先設定植物的動畫,大致上是這樣
https://ithelp.ithome.com.tw/upload/images/20200923/20130414BVGBoNLwMt.jpg

進入關卡時會呈現初始化的枯萎樣貌,當animator被呼叫"grow"的觸發器時進行長出的動畫。生長動畫如下:

Step2:

並且在這多花的物件上新增BoxCollider2D的trigger,把寬度設定成與花同寬。(這個collider的寬度等等會用來計算豐饒度)
https://ithelp.ithome.com.tw/upload/images/20200923/20130414RnqNE6kJfA.jpg

Step3:

接下來再上面加入一個腳本"BlossomCalculate.cs”
https://ithelp.ithome.com.tw/upload/images/20200923/20130414ZMqp8DoF0Q.jpg

腳本中要做的事情有兩件

  • 觸發生長動畫
  • 計算豐饒百分比

生長動畫的部分很簡單,當Oka進入時呼叫Animator.SetTrigger
https://ithelp.ithome.com.tw/upload/images/20200923/20130414ChQ5J5irl9.jpg

Step4:

至於計算百分比的方式是計算BoxCollider的寬度做為單一植物的豐饒量,並設定 "豐饒百分比 = 已生長的植物總寬 / 場景中植物總寬" 很直覺的算法吧!

為此我們需要幾個變數來儲存資料

  • float thisGrassRange,用來儲存這株植物的寬度
  • static float totalGrassRange,靜態變數用來儲存場景中所有植物加總寬度。
  • static float nowGrassRange,靜態變數用來儲存現在已經開花的植物總寬度。
    https://ithelp.ithome.com.tw/upload/images/20200923/20130414Nc940XbXWz.jpg

在遊戲載入時取得每株植物各自的寬度,並依序加到totalGrassRange中。使用靜態變數好處就是,這個值會橫跨所有使用同腳本的物件,很適合拿來做這類多物件數值加總的功能。
https://ithelp.ithome.com.tw/upload/images/20200923/20130414UwlNjyav1e.jpg

Step5:

下一個步驟,設定"當主角進入範圍時呼叫加總函式",在AddThis函式中會將目前的這株花的寬度加入nowGrassRange中並計算百分比,最後再把這個數值傳到控制UI的腳本中就完成整個流程了!
https://ithelp.ithome.com.tw/upload/images/20200923/20130414U15RrQody2.jpg

Step6:

對了,別忘了在開花後將這個腳本關閉,否則每次經過都會重覆再加一次豐饒數值喔!
https://ithelp.ithome.com.tw/upload/images/20200923/20130414kb0pGTZnPV.jpg

Step7:

完成以上設定後,同樣可以把花朵做成Prefab重複使用。也可以用同樣步驟製作各式各樣的植物,讓場景看起來更加生命力旺盛。


下面就來看看效果吧!
可以注意右下角豐饒UI的變化


上一篇
[Day23]關卡位置紀錄點&回傳
下一篇
[Day25] 場景植物互動
系列文
Unity遊戲開發與實踐-BlueRemedy內容分享30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言